#ifndef DSPSIMULATOR_INSTRUCTION_HEADWORD_H
#define DSPSIMULATOR_INSTRUCTION_HEADWORD_H

#include "dspSimulator/targetMachine/dspInstruction.h"

namespace dspsimulator {
    class HeadWord : public DspInstruction {
    public:
        explicit HeadWord(u32 address) : DspInstruction("HeadWord", address, 4) {}

        HeadWord(const HeadWord &) = default;

        HeadWord(HeadWord &&) = default;

        HeadWord &operator=(const HeadWord &) = default;

        HeadWord &operator=(HeadWord &&) = default;

        std::string to_string() const override { return "HeadWord"; };

        void generate_ir(const std::shared_ptr<simulator::IRGenElement> &ir_gen_element) override {
            update_pc(ir_gen_element->m_llvm_jit);
        }

        std::shared_ptr<Instruction> clone() const override { return std::make_shared<HeadWord>(*this); };
    };
}

#endif //DSPSIMULATOR_INSTRUCTION_HEADWORD_H
